/**
 * @author caojj
 * @version 1.0.0.3
 */

try{XN}catch(ex){XN={}}

XN.Security = {
	checkSame: function(str){
		var va = str.split("");
		for (var i = 0; i < va.length; i++) {
			if (i < va.length - 1) {
				if (va[i] != va[i + 1]) {
					return false;
				}
			}
		}
		return true;
	},
	
	checkCreas: function(str){
		var va = str.split("");
		var regA = new RegExp("[0-9]{" + str.length + "}", "ig");
		var regB = new RegExp("[a-zA-Z]{" + str.length + "}", "ig");
		if (regA.test(str) == true) {
			var findIn = true;
			var findDe = true;
			for (var i = 0; i < va.length; i++) {
				if (i < va.length - 1) {
					//alert(va[i]+1+" --- "+va[i+1]);
					if (parseInt(va[i]) + 1 != va[i + 1]) {
						findIn = false;
					}
					if (parseInt(va[i]) - 1 != va[i + 1]) {
						findDe = false;
					}
				}
			}
			
			if (findIn == true || findDe == true) {
				return true;
			} else {
				return false;
			}
		} else if (regB.test(str) == true) {
			var findIn = true;
			var findDe = true;
			for (var i = 0; i < va.length; i++) {
				if (i < va.length - 1) {
					if (va[i].charCodeAt(0) + 1 != va[i + 1].charCodeAt(0)) {
						findIn = false;
					}
					if (va[i].charCodeAt(0) - 1 != va[i + 1].charCodeAt(0)) {
						findDe = false;
					}
				}
			}
			if (findIn == true || findDe == true) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	},
	
	/**
	 * 获取密码安全级别
	 * @param {String} val
	 * @return {Integer} 安全级别
	 */
	getPwdSecLevel: function(val){
		var secLevel = 1;
		
		var regZA = new RegExp("[a-z]+", "ig");
		var regAZ = new RegExp("[A-Z]+", "ig");
		var reg09 = new RegExp("[0-9]+", "ig");
		var pwLen = val.length;
		
		var fZA = regZA.test(val);
		var fAZ = regAZ.test(val);
		var f09 = reg09.test(val);
		
		if ((fZA == true || fAZ == true) && f09 == true && pwLen > 12) {//高
			secLevel = 3;
		} else if (pwLen > 10 || (fZA == true && f09 == true && pwLen >= 6) || (fAZ == true && f09 == true && pwLen >= 6)) {//中
			secLevel = 2;
		} else if (pwLen < 10 && (fZA == true || fAZ == true || f09 == true)) {//低
			secLevel = 1;
		}
		
		return secLevel;
	},
	
	/**
	 * 验证密码
	 * @param {String} pwd
	 * @return {Object} 验证结果
	 */
	doVerify: function(pwd){
		var ret = {
			info: "&nbsp; ", //密码格式正确
			result: true
		}
		
		if (pwd == "") {
			ret.info = "请输入您的密码！";
			ret.result = false;
		} else if (pwd.length < 6) {
			ret.info = "密码太短，最短长度为6个字符";
			ret.result = false;
		} else {
			var reg = new RegExp("^[a-zA-Z0-9_]{6,20}$", "ig");
			if (reg.test(pwd)) {
				if (pwd.indexOf(" ") > -1) {
					ret.info = "密码中不能含有空格！";
					ret.result = false;
				} else if (this.checkSame(pwd)) {
					ret.info = "密码不能由完全相同的字符组成";
					ret.result = false;
				} else if (this.checkCreas(pwd)) {
					ret.info = "密码不能由连续的数字或字母组成";
					ret.result = false;
				} else {
					ret.info = "&nbsp; "; //密码格式正确
					ret.result = true;
				}
				
			} else {
				ret.info = "密码只能由英文字母、数字或下划线组成";
				ret.result = false;
			}
		}
		
		return ret;
	}
}
